Needleman wunch algorithm